#!/bin/bash
#--------安装docker和docker-compose----------#
# 注意：必须使用root用户运行
# 卸载老旧的版本
# 下载软件包
#配置文件位置
env_file=config/.env
function docker_install()
{
	echo "检查Docker......"
	docker -v
    if [ $? -eq  0 ]; then
        echo "检查到Docker已安装!"
    else
    	echo "安装docker环境..."
        
		if [[ -n $(find /etc -name "redhat-release") ]] || grep </proc/version -q -i "centos"; then
			yum install -y yum-utils 
			yum-config-manager --add-repo   https://download.docker.com/linux/centos/docker-ce.repo
			dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
			yum install -y --allowerasing docker-ce docker-ce-cli 
			echo 'centos'
			yum update xfsprogs -y
			systemctl start docker
			systemctl enable docker
		else
			curl -sSL https://get.daocloud.io/docker | sh
		fi
        echo "安装docker环境...安装完成!"
    fi
	
    echo "检查docker-compose......"
	docker-compose -v
	if [ $? -eq  0 ]; then
        echo "检查到docker-compose已安装!"
    else
		# 安装docker-compose
		curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
		# 为docker-compose设置可执行权限
		chmod +x /usr/local/bin/docker-compose
	fi
}
function get_config()
{
  param=$1
  value=$(sed -E '/^#.*|^ *$/d' $env_file | awk -F "${param}=" "/${param}=/{print \$2}" | tail -n1)
  echo $value | tr -d '\r'
}
function set_config()
{
    key=$1
    value=$2
    sed -i "s/^${key}.*\+=.*/${key}=${value}/" ${env_file}
}
echo "\n"
echo '欢迎使用即刻在线部署方式，系统需要docker和docker-compose的支持！'
echo '如果尚未安装以上两项，请选择1. '
echo '请选择安装项目（默认1）:'
echo '1.完全安装(docker、docker-compose、即刻证件照服务端)'
echo '2.仅安装即刻证件照服务端（已安装docker和docker-compose）'
read ARG
if [ -z "${ARG}" -o $ARG -eq 1 ]; then
	docker_install
fi

# 测试安装结果
docker --version
docker-compose --version
echo "docker、dcocker-compose是否安装成功（是否显示了docker、docker-compose版本）yes|no"
read VER
#---------部署即刻证件照服务端--------------#
case $VER in 
	N|n|NO|no)
		echo "请尝试采用其它方式安装docker和docker-compose"
		;;
	*)
		# 解压程序到指定目'
		# read -e -p '1.在线安装 2.本地安装:' setupmode
		# if [ -z "${setupmode}" -o $setupmode -eq 1 ]; then
		# 	# 解压程序到指定目'
		# 	curl -O http://www.jeek.tech:8080/media/jeekphoto.tar 
		# fi
		tar -xvf jeekphoto.tar
		cd "jeekphoto"

        # 设置数据库连接信息
        read -e -p '请设置数据库root用户密码：' root_pwd
        while [ ! -n"$root_pwd" ];do 
			read -e -p '请设置数据库root用户密码：' root_pwd
		done
        set_config MYSQL_ROOT_PASSWORD $root_pwd

        # 设置连接用户
        read -e -p '请设置连接数据库用户名：' db_user
        while [ ! -n"$db_user" ];do 
			read -e -p '请设置连接数据库用户名：' db_user
		done
        set_config MYSQL_USER $db_user
        # 设置密码
        read -e -p '请设置连接数据库用户密码：' db_user_pwd
        while [ ! -n"$db_user_pwd" ];do 
			read -e -p '请设置连接数据库用户密码：' db_user_pwd
		done
        set_config MYSQL_PASSWORD $db_user_pwd

        read -e -p '等待将支付密钥和上传密钥文件上传到目录(jeekphoto/config/cert/),上传完后，按任意键。。。'

        # 从模板创建初始化文件
        cat config/host/host_template.yml > config/host/host.yml
		# 增加host
		read -e -p '请输入服务器域名：' domain
		while [ ! -n"$domain" ];do 
			read -e -p '请输入服务器域名：' domain
		done
        #替换host文件中的域名
        sed -i "s/domain/${domain}/g" config/host/host.yml

		read -e -p '请输入服务器公网IP：' ip
		while [ ! -n"$ip" ];do
			read -e -p '请输入服务器公网IP：' ip
		done
		#echo " - ${ip} " >> config/host/host.yml
        sed -i "s/ip/${ip}/g" config/host/host.yml

        # 设置数据库用户名和密码
        host=$(get_config MYSQL_HOST)
        sed -i "s/param_host/${host}/g" config/host/host.yml
        echo $host

        database=$(get_config MYSQL_DATABASE)
        sed -i "s/param_db/${database}/g" config/host/host.yml
        echo $database

        user=$(get_config MYSQL_USER)
        sed -i "s/param_user/${user}/g" config/host/host.yml
        echo $user

        password=$(get_config MYSQL_PASSWORD)
        sed -i "s/param_password/${password}/g" config/host/host.yml
        echo $password

        # 设置mysql初始化文件
        # 从模板创建初始化文件
        cat config/db/init/init_template.sql > config/db/init/init.sql
        # 替换参数
        sed -i "s/param_user/${user}/g" config/db/init/init.sql
        sed -i "s/param_password/${password}/g" config/db/init/init.sql
        sed -i "s/param_db/${database}/g" config/db/init/init.sql

 
        read -e -p '等待将SSL证书上传到目录(jeekphoto/config/nginx/ssl/),上传完后，按任意键。。。'
        cat config/nginx/nginx-https.conf > config/nginx/nginx.conf
        sed -i "s/domain/${domain}/g" config/nginx/nginx.conf

       
		# 启动安装程序
		docker-compose build
		echo '安装完成！'
		echo '正在启动...'
		docker-compose up 
		;;
esac
